package au.com.acpfg.xml.query; import org.knime.core.data.DataCell; import org.knime.core.data.DataType; import org.knime.core.data.def.StringCell; import au.com.acpfg.xml.query.XQueryReporter.QueryResponseFragmentType; /** * A reporter which eliminates all XML markup from the string leaving only the textual content of the * query result * * @author andrew.cassin * */ public class TextReporter extends StringReporter { private StringBuffer m_sb = new StringBuffer(StringReporter.INITIAL_BUFFER_CAPACITY); public TextReporter(XQueryReporter xr, String colname) throws Exception { super(); xr.register_callback(QueryResponseFragmentType.RESP_INT, this); xr.register_callback(QueryResponseFragmentType.RESP_STRING, this); xr.register_reporter(this, colname); } public void callback(QueryResponseFragmentType type, String s) { switch (type) { case RESP_INT: case RESP_STRING: m_sb.append(s); break; default: break; } } @Override public void reset() { m_sb = new StringBuffer(StringReporter.INITIAL_BUFFER_CAPACITY); } @Override public DataCell getCell(String colname) { if (m_sb.length() < 1) return DataType.getMissingCell(); return new StringCell(m_sb.toString()); } }